home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 January: Mac OS SDK / Dev.CD Jan 99 SDK1.toast / Development Kits / Interfaces&Libraries / OpenTransport / Open Tpt Protocol Developer / Includes / OTTiming.h < prev   
Encoding:
C/C++ Source or Header  |  1997-11-24  |  6.9 KB  |  269 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        OTTiming.h
  3.  
  4.     Contains:    Macros for debugging stuff
  5.  
  6.     Copyright:    © 1994-1996 by Apple Computer, Inc., all rights reserved.
  7.  
  8. */
  9.  
  10. #ifndef __OTTIMING__
  11. #define __OTTIMING__
  12.  
  13. #ifndef __OTDEBUG__
  14. #include "OTDebug.h"
  15. #endif
  16. #ifndef __SHAREDGLOBAL__
  17. #include "SharedGlobal.h"
  18. #endif
  19.  
  20. #if qDebug
  21. #define DO_TIMING    1
  22. #else
  23. #define DO_TIMING    0
  24. #endif
  25.  
  26. /*******************************************************************************
  27. ** Timing constants
  28. ********************************************************************************/
  29. //
  30. // Instrumentation path defines (for Maxwell)
  31. //
  32. #define kOTParentInstrumentationPath    "Operating System:I/O Families:"
  33. #define kOTInstrumentationPath            "Operating System:I/O Families:Open Transport:"
  34. #define kEthernetInstrumentationPath    kOTInstrumentationPath "Ethernet:"
  35. #define kSerialInstrumentationPath        kOTInstrumentationPath "Serial:"
  36.  
  37. enum
  38. {
  39.     kOTEnterSndUData        = 0x01,
  40.     kOTLeaveSndUData        = 0x02,
  41.     kOTEnterRcvUData        = 0x03,
  42.     kOTLeaveRcvUData        = 0x04,
  43.     
  44.     kOTEnterSnd                = 0x10,
  45.     kOTLeaveSnd                = 0x11,
  46.     kOTEnterRcv                = 0x12,
  47.     kOTLeaveRcv                = 0x13,
  48.     
  49.     kOTEnterSndURequest        = 0x20,    
  50.     kOTLeaveSndURequest        = 0x21,
  51.     kOTEnterSndUReply        = 0x22,
  52.     kOTLeaveSndUReply        = 0x23,
  53.     kOTEnterRcvUReply        = 0x24,
  54.     kOTLeaveRcvUReply        = 0x25,
  55.     kOTEnterRcvURequest        = 0x26,
  56.     kOTLeaveRcvURequest        = 0x27,
  57.     kOTUReplyComplete        = 0x28,
  58.     kOTDeliverReplyEvent    = 0x29,
  59.     kOTDeliverRequestEvent    = 0x2a,
  60.     
  61.     kOTSchedTaskCritSection = 0x30,
  62.     kOTEnterKernel            = 0x31,
  63.     kOTLeaveKernel            = 0x32,
  64.     kOTEnterKernelSignalTask= 0x33,
  65.     kOTLeaveKernelSignalTask= 0x34,
  66.     kOTEnterClientSignalTask= 0x35,
  67.     kOTLeaveClientSignalTask= 0x36,
  68.     kOTRunKernelTimers        = 0x37,
  69.     kOTDoneKernelTimers        = 0x38,
  70.     kOTEnterRunClientTasks    = 0x39,
  71.     kOTLeaveRunClientTasks    = 0x3a,
  72.     
  73.     kOTCritWillRunTask        = 0x40,
  74.     kOTRunImmediateTask        = 0x41,
  75.     kOTDoDTInstall            = 0x42,
  76.     kOTTaskWillRun            = 0x43,
  77.     kOTTaskIsScheduled        = 0x44,
  78.     kOTEnterRealDT            = 0x45,
  79.     kOTLeaveRealDT            = 0x46,
  80.     kOTEnterKernelTask        = 0x47,
  81.     kOTLeaveKernelTask        = 0x48,
  82.     kOTEnterRealKernelTask    = 0x49,
  83.     kOTLeaveRealKernelTask    = 0x4a,
  84.     
  85.     kOTEnterADEVRcv            = 0x50,
  86.     kOTLeaveADEVRcv            = 0x51,
  87.     kOTEnterADEVSnd            = 0x52,
  88.     kOTLeaveADEVSnd            = 0x53,
  89.  
  90.     kOTEnterDDPRcv            = 0x60,
  91.     kOTLeaveDDPRcv            = 0x61,
  92.     kOTEnterDDPSnd            = 0x62,
  93.     kOTLeaveDDPSnd            = 0x63,
  94.     kOTDDPEnterContSend        = 0x64,
  95.     kOTDDPLeaveContSend        = 0x65,
  96.     kOTDDPEnterContRcv        = 0x66,
  97.     kOTDDPLeaveContRcv        = 0x67,
  98.  
  99.     kOTEnterATPSndReq        = 0x70,
  100.     kOTLeaveATPSndReq        = 0x71,
  101.     kOTEnterATPSndReply        = 0x72,
  102.     kOTLeaveATPSndReply        = 0x73,
  103.     kOTEnterATPRcvReq        = 0x74,
  104.     kOTLeaveATPRcvReq        = 0x75,
  105.     kOTEnterATPRcvReply        = 0x76,
  106.     kOTLeaveATPRcvReply        = 0x77,
  107.     kOTEnterATPRelease        = 0x78,
  108.     kOTLeaveATPRelease        = 0x79,
  109.     kOTDeliverATPRequest    = 0x7a,
  110.     kOTDeliverATPReply        = 0x7b,
  111.     kOTDeliverATPReplyDone    = 0x7c,
  112.     
  113.     kOTMaxStdEvents            = 0x0ff,
  114.     
  115.     /*
  116.      * Special, second tier events
  117.      */
  118.     kOTIncPromisesEvent        = 0x1001,
  119.     kOTDecPromisesEvent        = 0x1002,
  120.         kOTPlaceSchedule1        = 1,
  121.         kOTPlaceSchedule2        = 2,
  122.         kOTPlaceSchedule3        = 3,
  123.         kOTPlaceSchedule4        = 4,
  124.         kOTPlaceWriteMessage    = 5,
  125.         kOTPlaceProcessClose    = 6,
  126.         kOTPlaceKernelDispatch    = 7,
  127.         kOTPlaceGroupNotify        = 8,
  128.         kOTPlaceOSRWait            = 9,
  129.         kOTPlaceRealSWITask        = 10,
  130.         kOTPlaceSWITask            = 11,
  131.         kOTPlaceIdle            = 12,
  132.     kOTRunSWITask            = 0x1003,
  133.         kOTPlaceImplPromise        = 1,
  134.         kOTPlaceLeaveCrit        = 2,
  135.     kOTRunDeferredTasks        = 0x1004,
  136.         
  137.     /*
  138.      * Another second tier of events, for Open/Close endpoints & Stream
  139.      */
  140.     kOTEnterStreamClose            = 0x2001,
  141.     kOTLeaveStreamClose            = 0x2002,
  142.     kOTEnterKernelStreamClose    = 0x2003,
  143.     kOTLeaveKernelStreamClose    = 0x2004,
  144.     kOTEnterStreamOpen            = 0x2005,
  145.     kOTLeaveStreamOpen            = 0x2006,
  146.     kOTEnterStreamOpenSpin        = 0x2007,
  147.     kOTLeaveStreamOpenSpin        = 0x2008,
  148.     kOTEnterILINKIOCTL            = 0x2009,
  149.     kOTLeaveILINKIOCTL            = 0x200a,
  150.     kOTEnterOpenEndpoint        = 0x200b,
  151.     kOTLeaveOpenEndpoint        = 0x200c,
  152.     kOTEnterGetEPInfo            = 0x200d,
  153.     kOTLeaveGetEPInfo            = 0x200e,
  154.     kOTEnterProviderClose        = 0x200f,
  155.     kOTLeaveProviderClose        = 0x2010,
  156.     kOTEnterProviderOpen        = 0x2011,
  157.     kOTLeaveProviderOpen        = 0x2012,
  158.     kOTProviderOpenComplete        = 0x2013,
  159.     kOTEnterCreateStream        = 0x2014,
  160.     kOTLeaveCreateStream        = 0x2015,
  161.     kOTEnterCfigCreateStream    = 0x2016,
  162.     kOTLeaveCfigCreateStream    = 0x2017,
  163.     kOTStreamOpenComplete        = 0x2018,
  164.     kOTEnterKernelStreamOpen    = 0x2019,
  165.     kOTLeaveKernelStreamOpen    = 0x201a,
  166.     kOTEnterIPUSHIOCTL            = 0x201b,
  167.     kOTLeaveIPUSHIOCTL            = 0x201c,
  168.     
  169.     kOTEnterOSRCancel            = 0x2100,
  170.     kOTLeaveOSRCancel            = 0x2102,
  171.     kOTStartWaitForKernelClose    = 0x2103,
  172.     kOTEndWaitForKernelClose    = 0x2104,
  173.     kOTCloseNotificationDone    = 0x2105,
  174.     kOTEnterOSRClose            = 0x2106,
  175.     kOTLeaveOSRClose            = 0x2107,
  176.     kOTEnterCancelSigs            = 0x2108,
  177.     kOTLeaveCancelSigs            = 0x2109,
  178.     kOTCloseState3                = 0x210a,
  179.     kOTCloseState4                = 0x210b,
  180.     kOTCloseState5                = 0x210c,
  181.     kOTCloseState6                = 0x210d,
  182.     kOTCloseState7                = 0x210e,
  183.     kOTCloseState8                = 0x210f,
  184.     kOTCloseState10                = 0x2110,
  185.     kOTCloseState1112            = 0x2111,
  186.     kOTRestartClose                = 0x2112,
  187.     kOTOSRPopState0                = 0x2113,
  188.     kOTOSRPopState2                = 0x2114,
  189.     kOTOSRPopState2a            = 0x2115,
  190.     kOTIPOPState0                = 0x2116,
  191.     kOTIPOPState4                = 0x2117,
  192.     kOTIPOPState5                = 0x2118,
  193.     kOTIPOPState5a                = 0x2119,
  194.     kOTIPOPState6                = 0x211a,
  195.     kOTIPOPCleanup                = 0x211b,
  196.     kOTIPOPLeave                = 0x211c,
  197.     
  198.     
  199.     kOTEnterProcessOpen            = 0x2200,
  200.     kOTLeaveProcessOpen            = 0x2201,
  201.     kOTEnterOSROpen                = 0x2202,
  202.     kOTLeaveOSROpen                = 0x2203,
  203.     kOTOpenState0                = 0x2204,
  204.     kOTOpenState1                = 0x2205,
  205.     kOTOpenState2                = 0x2206,
  206.     kOTOpenState4                = 0x2207,
  207.     kOTOpenState5                = 0x2208,
  208.     kOTOpenState5a                = 0x2209,
  209.     kOTOpenState5b                = 0x220a,
  210.     kOTOpenState5c                = 0x220b,
  211.     kOTOpenState7                = 0x220c,
  212.     kOTOpenState8                = 0x220d,
  213.     kOTCleaningUpOpen             = 0x220e,
  214.     kOTCallOpenFinish            = 0x220f,
  215.     kOTDoneOpenFinish            = 0x2210,
  216.     kOTOSRPushState0            = 0x2211,
  217.     kOTOSRPushState1            = 0x2212,
  218.     kOTOSRPushState6            = 0x2213,
  219.     kOTOSRPushState8a            = 0x2214,
  220.     kOTOSRPushState9            = 0x2215,
  221.     kOTOSRPushState9a            = 0x2216,
  222.     kOTOSRPushCleanup            = 0x2217
  223. };
  224.  
  225. /*******************************************************************************
  226. ** Timing function
  227. **
  228. ** The first parameter is the event code to log.  The 2nd 2 parameters are
  229. ** auxiliary logging values, if you want to use them.  If no one sets the 2nd
  230. ** 2 parameters to non-zero values, the log will remain using 2 longs - the
  231. ** first being a timestamp, and the second being a code.  As soon as
  232. ** someone uses non-zero values in the 2nd 2 longs, the log will begin using
  233. ** 4 longs per log entry.
  234. ********************************************************************************/
  235.  
  236. #ifdef __cplusplus
  237. extern "C" {
  238. #endif
  239.  
  240. void OTDoTimingLog(unsigned long, unsigned long, unsigned long);
  241.  
  242. #ifdef __cplusplus
  243. }
  244. #endif
  245.  
  246. #if DO_TIMING
  247.  
  248. #define OTSetEvent(code)                        \
  249.     { if ( GetOTGlobal()->fTBSize != 0 &&         \
  250.            GetOTGlobal()->fLowHigh[1] != 0 )    \
  251.         OTDoTimingLog(code, 0, 0);                \
  252.     }
  253.  
  254. #define OTLogEvent(code, data1, data2)            \
  255.     { if ( GetOTGlobal()->fTBSize != 0 &&         \
  256.            GetOTGlobal()->fLowHigh[1] != 0 )    \
  257.         OTDoTimingLog(code, data1, data2);        \
  258.     }
  259.  
  260. #else
  261.  
  262. #define OTSetEvent(code)
  263. #define OTLogEvent(code, data1, data2)
  264.  
  265. #endif
  266.  
  267.  
  268. #endif
  269.